package com.tracbds.core.cmd;

import com.tracbds.core.bean.Cmd8600Bean;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import java.util.List;

/**
 * JT808 0x8600 设置圆形区域命令
 */
public class Cmd8600 extends AbstractJT808Command {
    public Cmd8600(String tid, List<Cmd8600Bean> areas, boolean isVersion) {
        super(0x8600, tid, getBody(areas), isVersion);
    }

    private static byte[] getBody(List<Cmd8600Bean> areas) {
        ByteBuf buf = Unpooled.buffer();
        buf.writeByte(0); // 设置属性：0=更新区域
        buf.writeByte(areas.size()); // 区域总数
        for (Cmd8600Bean area : areas) {
            buf.writeInt(area.getId()); // 区域ID
            buf.writeShort(area.getProperty()); // 区域属性
            buf.writeInt((int) (area.getLat() * 1_000_000)); // 纬度
            buf.writeInt((int) (area.getLng() * 1_000_000)); // 经度
            buf.writeInt(area.getRadius()); // 半径
            // 如需支持时间、限速等字段，可在此扩展
        }
        return returnByteBuf(buf);
    }
}
